package fr.emn.nuitinfo.model.persistence.impl;

import static com.googlecode.objectify.ObjectifyService.ofy;

import java.util.List;

import com.google.gson.Gson;

import fr.emn.nuitinfo.model.Utilisateur;
import fr.emn.nuitinfo.model.interfaces.IUtilisateur;
import fr.emn.nuitinfo.model.persistence.IDAO;

public class UtilisateurDatastoreDAO implements IDAO<IUtilisateur> {

	@Override
	public List<IUtilisateur> retrieveAll() {
		return ofy().load().type(IUtilisateur.class).list();
	}

	@Override
	public void create(String t) {
		Gson gson = new Gson();
		Utilisateur utilisateur = gson.fromJson(t, Utilisateur.class);
		ofy().save().entity(utilisateur);
	}

	@Override
	public IUtilisateur retrieveByName(String name) {
		return ofy().load().type(IUtilisateur.class).id(name).get();
	}

	@Override
	public void update(String name, String t) {
		Gson gson = new Gson();
		IUtilisateur utilisateur = gson.fromJson(t, IUtilisateur.class);
		ofy().delete().type(IUtilisateur.class).id(utilisateur.getUsername());
		ofy().save().entity(utilisateur);
	}

	@Override
	public void remove(String name) {
		ofy().delete().type(IUtilisateur.class).id(name);
	}

}
